package com.itbaizhan.controller;

import com.itbaizhan.domain.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/*使用postman软件测试*/
@Controller
@RequestMapping("/student")
public class TestRestful7 {
    //删除学生
    /*@PathVariable
    * 作用：在RESTful风格的URL中获取占位符的值
位置：方法参数前
属性：
value：获取哪个占位符的值作为参数值，如果占位符和参数名相同，可以省略该属性。*/
    // 路径中的{id}表示占位符，最后会封装到方法的参数中使用
    //删除学生
    //http://localhost:8080/student/1    注：地址后面要加/id
    // @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
    //简写
    @DeleteMapping("/{id}")
    public String deleteStudent(@PathVariable("id") int id){
        System.out.println("删除学生id为"+id);
        return "baizhan";
    }

    //查询
    //如果占位符value与参数名相同，可以省略@PathVariable中的参数名
    //@RequestMapping(value = "/{id}",method = RequestMethod.GET)
    @GetMapping("/{id}")
    public String select(@PathVariable int id){
        System.out.println("查询学生id为"+id);
        return "baizhan";
    }

    //新增学生
    // @RequestMapping(value = "/{id}",method = RequestMethod.POST)
    @PostMapping("/{id}")
    public String addStudent(@PathVariable("id") int id, Student student){
        System.out.println("添加id为"+id+"学生");
        return "baizhan";
    }

    //修改学生
    @PutMapping("/{id}")
    public String updateStudent(@PathVariable("id") int id,Student student){
        System.out.println("修改id为"+id+"学生");
        return "baizhan";
    }
}
/*RESTful风格是一种URL路径的设计风格。在RESTful风格的URL路径中，
网络上的任意数据都可以看成一个资源，它可以是一段文本、一张图片，
也可以是一个Java对象。而每个资源都会占据一个网络路径，
无论对该资源进行增删改查，访问的路径是一致的。*/
/*传统URL：
查找id为1的学生：
http://localhost:8080/student/findById?id=30
删除id为1的学生：
http://localhost:8080/student/deleteById?id=30

RESTful风格URL：
查找id为30的学生：
http://localhost:8080/student/30
删除id为30的学生：
http://localhost:8080/student/30*/
/*那么如何区分对该资源是哪一种操作？通过请求方式不同，
判断进行的是什么操作。

之前我们学过两种请求方式，GET请求和POST请求，而访问RESTful风格的URL一共有四种请求方式：
GET请求：查询操作
POST请求：新增操作
DELETE请求：删除操作
PUT请求：修改操作*/